how does [<Literal>] differ from other constants in F#
Posted
by
Mitzh
on Stack Overflow
See other posts from Stack Overflow
or by Mitzh
Published on 2014-08-24T14:40:01Z
Indexed on
2014/08/24
22:20 UTC
Read the original article
Hit count: 160
F#
I am a bit confused by the Literal keyword and why it is necessary in F#.
Reading the docs, it sounds to me that [<Literal>]
is used to define a constant, however I am a bit confused how this constant differs from all other constants in F#..
Values that are intended to be constants can be marked with the Literal attribute. This attribute has the effect of causing a value to be compiled as a constant.
When I think of a constant, I think of something which is immutable....
let x = "a" + "b" //this is a immutable value, its value is constant
[<Literal>]
let y = "a" + "b" //this is also a immutable value, but why is this a special constant?
Is it because the 'normal' F# values are evaluated lazily and the [<Literal>]
is not evaluated lazily..? is that what they mean with 'compiled as constant'..? or is there something else to it?
© Stack Overflow or respective owner